package com.example.smartagrisys.service;

import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.IService;
import com.example.smartagrisys.entity.Order;

import java.util.List;

/**
 * 订单服务接口
 */
public interface OrderService extends IService<Order> {
    
    /**
     * 分页获取订单列表
     *
     * @param page 分页参数
     * @param order 查询条件
     * @return 分页结果
     */
    Page<Order> getOrderPage(Page<Order> page, Order order);
    
    /**
     * 获取买家的订单列表
     *
     * @param buyerId 买家ID
     * @return 订单列表
     */
    List<Order> getOrdersByBuyerId(Long buyerId);
    
    /**
     * 获取卖家的订单列表
     *
     * @param sellerId 卖家ID
     * @return 订单列表
     */
    List<Order> getOrdersBySellerId(Long sellerId);
    
    /**
     * 获取农户的所有订单（包括作为买家购买肥料的订单和作为卖家销售农产品的订单）
     *
     * @param farmerId 农户ID
     * @return 订单列表
     */
    List<Order> getAllFarmerOrders(Long farmerId);
    
    /**
     * 根据订单ID获取订单详情
     *
     * @param id 订单ID
     * @return 订单详情
     */
    Order getOrderById(Long id);
    
    /**
     * 创建订单
     *
     * @param order 订单信息
     * @return 是否成功
     */
    boolean createOrder(Order order);
    
    /**
     * 支付订单
     *
     * @param id 订单ID
     * @return 是否成功
     */
    boolean payOrder(Long id);
    
    /**
     * 发货
     *
     * @param id 订单ID
     * @return 是否成功
     */
    boolean shipOrder(Long id);
    
    /**
     * 确认收货
     *
     * @param id 订单ID
     * @return 是否成功
     */
    boolean receiveOrder(Long id);
    
    /**
     * 取消订单
     *
     * @param id 订单ID
     * @return 是否成功
     */
    boolean cancelOrder(Long id);
} 